/*
 * Copyright (c) 2018-2999 九五云信息科技有限公司 All rights reserved.
 *
 * https://www.gz-yami.com/
 *
 */

package com.yami.shop.bean.model;

import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 下线处理事件
 *
 * @author
 * @date 2019-09-20 10:44:58
 */
@Data
@TableName("yy_offline_handle_event")
public class OfflineHandleEvent implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 事件id
     */
    @TableId
    private Long eventId;
    /**
     * 1 商品 2 店铺 3满减 4.优惠券 5.团购 6.分销 7.秒杀
     */
    private Integer handleType;
    /**
     * 处理id，如果是商品就是商品id，店铺就是店铺id
     */
    private Long handleId;
    /**
     * 关联店铺id
     */
    private Long shopId;
    /**
     * 处理人id
     */
    private Long handlerId;
    /**
     * 处理状态 1平台进行下线 2 重新申请，等待审核 3.审核通过 4 审核未通过
     */
    private Integer status;
    /**
     * 下线原因
     */
    private String offlineReason;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 处理人
     */
    @TableField(exist = false)
    private String handler;

    /**
     * 最新申请项
     */
    @TableField(exist = false)
    private OfflineHandleEventItem lastOfflineHandleEventItem;
    /**
     * 历史申请列表
     */
    @TableField(exist = false)
    private List<OfflineHandleEventItem> offlineHandleEventItemList;

    public List<OfflineHandleEventItem> getOfflineHandleEventItemList() {
        if (CollectionUtil.isNotEmpty(offlineHandleEventItemList)) {
            offlineHandleEventItemList = offlineHandleEventItemList.stream().sorted(Comparator.comparing(OfflineHandleEventItem::getCreateTime).reversed()).collect(Collectors.toList());
            return offlineHandleEventItemList;
        }
        return null;
    }


    public OfflineHandleEventItem getLastOfflineHandleEventItem() {
        if (CollectionUtil.isNotEmpty(offlineHandleEventItemList)) {
            return offlineHandleEventItemList.stream().max(Comparator.comparing(OfflineHandleEventItem::getCreateTime)).get();
        }
        return null;
    }
}
